{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 18\n",
    "\n",
    "# 误差函数\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78cb308d-a5d5-40f5-ad73-915e0dafe8d0",
   "metadata": {},
   "source": [
    "这段代码绘制了误差函数\n",
    "\n",
    "$$\n",
    "\\operatorname{erf}(x) = \\frac{2}{\\sqrt{\\pi}} \\int_0^x e^{-t^2} \\, dt\n",
    "$$\n",
    "\n",
    "在区间 $x \\in [-3, 3]$ 上的图像。误差函数是用于统计学和概率论中的一个特殊函数，常用于描述正态分布中的累积概率。在数学上，$\\operatorname{erf}(x)$ 表示从 $0$ 到 $x$ 的高斯分布积分的倍数。它的值在 $x = 0$ 处为 $0$，随着 $x$ 增大而单调增加，当 $x \\to \\infty$ 时逼近 $1$，当 $x \\to -\\infty$ 时趋于 $-1$。\n",
    "\n",
    "代码通过绘制这些极限值的水平线，即 $\\operatorname{erf}(\\infty) = 1$、$\\operatorname{erf}(-\\infty) = -1$ 和 $\\operatorname{erf}(0) = 0$，帮助我们更直观地观察到误差函数的对称性以及它在正负无穷处的渐近行为。这些特性说明 $\\operatorname{erf}(x)$ 是一个奇函数，并且在数值上接近于累积分布函数。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea712136-b007-403f-80cc-02f166a42394",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "22639993-e109-41fe-9111-dc2db73a3468",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy import oo, erf, lambdify  # 导入无穷大和误差函数\n",
    "import numpy as np\n",
    "from sympy.abc import x\n",
    "from matplotlib import pyplot as plt  # 导入绘图库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ca5b0d8b-5c5f-4614-9a3b-ea97d44bf64c",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_array = np.linspace(-3, 3, 100)  # 定义 x 的取值范围\n",
    "\n",
    "erf_x_fcn = lambdify(x, erf(x))  # 将误差函数 erf(x) 转换为数值函数\n",
    "y_array = erf_x_fcn(x_array)  # 计算误差函数在 x_array 上的值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e25bc5e-7486-45eb-a3b8-ce170954a9c3",
   "metadata": {},
   "source": [
    "## 绘制误差函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "60331055-034c-4b6d-8cbe-349e3dc5207b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.plot(x_array, y_array, 'b')  # 绘制误差函数曲线\n",
    "\n",
    "ax.axhline(y=erf(oo), color='r', linestyle='-')  # 绘制 y = erf(∞) 的水平线\n",
    "ax.axhline(y=erf(-oo), color='r', linestyle='-')  # 绘制 y = erf(-∞) 的水平线\n",
    "ax.axhline(y=erf(0), color='r', linestyle='-')  # 绘制 y = erf(0) 的水平线\n",
    "\n",
    "ax.set_xlim(x_array.min(), x_array.max())  # 设置 x 轴范围\n",
    "ax.set_ylim(-1, 1)  # 设置 y 轴范围\n",
    "plt.gca().spines['right'].set_visible(False)  # 隐藏右边框\n",
    "plt.gca().spines['top'].set_visible(False)  # 隐藏上边框\n",
    "ax.set_xlabel('x')  # 设置 x 轴标签\n",
    "ax.set_ylabel('erf(x)')  # 设置 y 轴标签\n",
    "ax.grid(linestyle='--', linewidth=0.25, color=[0.75, 0.75, 0.75])  # 添加网格"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "85a80909-2aac-49ed-bb7a-f8cc6b80ee7d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
